const Promise = require('./promise');
/*
 * 执行http请求
 *
 * 自动转化配置文件config中的参数转化为url参数
 * 自动补齐header.authrozie
 * 自动补齐header.myclient
 * @param {Object} options 执行wx.request的参数，options.loading是否显示loading.
 * @returns Promise.
 */

class Http {
  static request(options) {
    return new Promise(function (resolve, reject) {
      if(options.loading) {
        wx.showNavigationBarLoading();
      }
      //调试数据暂时写死
      //options.data.openid = 1;
      const config = {
        url: options.url,
        method: options.method,
        dataType: 'json',
        success: function (res) {
          console.info(res);
          if(res.statusCode != 200) {
            wx.showToast({
              title: `接口${res.statusCode}错误`,
              image: '/resources/warning.png'
            });
          }
          resolve(res.data);
        },
        fail: function (error) {
          reject({
            error,
            message: '接口异常'
          });
          wx.showToast({
            title: `服务器网络异常`
          });
        },
        complete: function () {
          if(options.loading) {
            wx.hideNavigationBarLoading();
          }
        }
      };
      if(!!options.data) {
        config.data = options.data;
      }
      wx.request(config);
    });
  }
}

module.exports = Http;
